// RAP [rh] SplashHandler disabled
///*******************************************************************************
// * Copyright (c) 2007 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// ******************************************************************************/
//
//package org.eclipse.ui.internal.splash;
//
//import java.util.HashMap;
//import java.util.Map;
//
//import org.eclipse.core.runtime.IConfigurationElement;
//import org.eclipse.core.runtime.IExtension;
//import org.eclipse.core.runtime.IExtensionPoint;
//import org.eclipse.core.runtime.IProduct;
//import org.eclipse.core.runtime.Platform;
//import org.eclipse.core.runtime.SafeRunner;
//import org.eclipse.jface.util.SafeRunnable;
//import org.eclipse.ui.PlatformUI;
//import org.eclipse.ui.internal.WorkbenchPlugin;
//import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
//import org.eclipse.ui.splash.AbstractSplashHandler;
//
///**
// * Simple non-caching access to the splashHandler extension point.
// *
// * @since 3.3
// */
//public final class SplashHandlerFactory {
//
// /**
// * Find the splash handler for the given product or <code>null</code> if
// * it cannot be found.
// *
// * @param product
// * the product
// * @return the splash or <code>null</code>
// */
// public static AbstractSplashHandler findSplashHandlerFor(IProduct product) {
// if (product == null)
// return null;
//
// IExtensionPoint point = Platform.getExtensionRegistry()
// .getExtensionPoint(PlatformUI.PLUGIN_ID,
// IWorkbenchRegistryConstants.PL_SPLASH_HANDLERS);
//
// if (point == null)
// return null;
//
// IExtension[] extensions = point.getExtensions();
// Map idToSplash = new HashMap(); // String->ConfigurationElement
// String[] targetId = new String[1];
// for (int i = 0; i < extensions.length; i++) {
// IConfigurationElement[] children = extensions[i]
// .getConfigurationElements();
// for (int j = 0; j < children.length; j++) {
// AbstractSplashHandler handler = processElement(children[j],
// idToSplash, targetId, product);
// if (handler != null)
// return handler;
//
// }
// }
// return null;
// }
//
// /**
// * Process a given element.
// *
// * @param configurationElement
// * the element to process
// * @param idToSplash
// * the map of current splash elements
// * @param targetId
// * the target id if known
// * @param product
// * the product to search for
// * @return a splash matching the target id from this element or
// * <code>null</code>
// */
// private static AbstractSplashHandler processElement(
// IConfigurationElement configurationElement, Map idToSplash,
// String[] targetId, IProduct product) {
// String type = configurationElement.getName();
// if (IWorkbenchRegistryConstants.TAG_SPLASH_HANDLER.equals(type)) {
// String id = configurationElement
// .getAttribute(IWorkbenchRegistryConstants.ATT_ID);
// if (id == null)
// return null;
//
// // we know the target and this element is it
// if (targetId[0] != null && id.equals(targetId[0])) {
// return create(configurationElement);
// }
// // store for later examination
// idToSplash.put(id, configurationElement);
//
// } else if (IWorkbenchRegistryConstants.TAG_SPLASH_HANDLER_PRODUCT_BINDING
// .equals(type)) {
// String productId = configurationElement
// .getAttribute(IWorkbenchRegistryConstants.ATT_PRODUCTID);
// if (product.getId().equals(productId) && targetId[0] == null) { // we
// // found the target ID
// targetId[0] = configurationElement
// .getAttribute(IWorkbenchRegistryConstants.ATT_SPLASH_ID);
// // check all currently located splashes
// IConfigurationElement splashElement = (IConfigurationElement) idToSplash
// .get(targetId[0]);
// if (splashElement != null)
// return create(splashElement);
// }
// }
//
// return null;
// }
//
// /**
// * Create the splash implementation.
// *
// * @param splashElement
// * the element to create from
// * @return the element or <code>null</code> if it couldn't be created
// */
// private static AbstractSplashHandler create(
// final IConfigurationElement splashElement) {
// final AbstractSplashHandler[] handler = new AbstractSplashHandler[1];
// SafeRunner.run(new SafeRunnable() {
//
// /*
// * (non-Javadoc)
// *
// * @see org.eclipse.core.runtime.ISafeRunnable#run()
// */
// public void run() throws Exception {
// handler[0] = (AbstractSplashHandler) WorkbenchPlugin
// .createExtension(splashElement,
// IWorkbenchRegistryConstants.ATT_CLASS);
// }
//
// /*
// * (non-Javadoc)
// *
// * @see org.eclipse.jface.util.SafeRunnable#handleException(java.lang.Throwable)
// */
// public void handleException(Throwable e) {
// WorkbenchPlugin
// .log("Problem creating splash implementation", e); //$NON-NLS-1$
// }
// });
//
// return handler[0];
// }
//}